home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 98 / Skunkware 98.iso / src / interp / perl5.005.tar.gz / perl5.005.tar / perl5.005 / t / op / array.t < prev    next >
Text File  |  1998-07-12  |  6KB  |  209 lines

  1. #!./perl
  2.  
  3. print "1..63\n";
  4.  
  5. #
  6. # @foo, @bar, and @ary are also used from tie-stdarray after tie-ing them
  7. #
  8.  
  9. @ary = (1,2,3,4,5);
  10. if (join('',@ary) eq '12345') {print "ok 1\n";} else {print "not ok 1\n";}
  11.  
  12. $tmp = $ary[$#ary]; --$#ary;
  13. if ($tmp == 5) {print "ok 2\n";} else {print "not ok 2\n";}
  14. if ($#ary == 3) {print "ok 3\n";} else {print "not ok 3\n";}
  15. if (join('',@ary) eq '1234') {print "ok 4\n";} else {print "not ok 4\n";}
  16.  
  17. $[ = 1;
  18. @ary = (1,2,3,4,5);
  19. if (join('',@ary) eq '12345') {print "ok 5\n";} else {print "not ok 5\n";}
  20.  
  21. $tmp = $ary[$#ary]; --$#ary;
  22. if ($tmp == 5) {print "ok 6\n";} else {print "not ok 6\n";}
  23. if ($#ary == 4) {print "ok 7\n";} else {print "not ok 7\n";}
  24. if (join('',@ary) eq '1234') {print "ok 8\n";} else {print "not ok 8\n";}
  25.  
  26. if ($ary[5] eq '') {print "ok 9\n";} else {print "not ok 9\n";}
  27.  
  28. $#ary += 1;    # see if element 5 gone for good
  29. if ($#ary == 5) {print "ok 10\n";} else {print "not ok 10\n";}
  30. if (defined $ary[5]) {print "not ok 11\n";} else {print "ok 11\n";}
  31.  
  32. $[ = 0;
  33. @foo = ();
  34. $r = join(',', $#foo, @foo);
  35. if ($r eq "-1") {print "ok 12\n";} else {print "not ok 12 $r\n";}
  36. $foo[0] = '0';
  37. $r = join(',', $#foo, @foo);
  38. if ($r eq "0,0") {print "ok 13\n";} else {print "not ok 13 $r\n";}
  39. $foo[2] = '2';
  40. $r = join(',', $#foo, @foo);
  41. if ($r eq "2,0,,2") {print "ok 14\n";} else {print "not ok 14 $r\n";}
  42. @bar = ();
  43. $bar[0] = '0';
  44. $bar[1] = '1';
  45. $r = join(',', $#bar, @bar);
  46. if ($r eq "1,0,1") {print "ok 15\n";} else {print "not ok 15 $r\n";}
  47. @bar = ();
  48. $r = join(',', $#bar, @bar);
  49. if ($r eq "-1") {print "ok 16\n";} else {print "not ok 16 $r\n";}
  50. $bar[0] = '0';
  51. $r = join(',', $#bar, @bar);
  52. if ($r eq "0,0") {print "ok 17\n";} else {print "not ok 17 $r\n";}
  53. $bar[2] = '2';
  54. $r = join(',', $#bar, @bar);
  55. if ($r eq "2,0,,2") {print "ok 18\n";} else {print "not ok 18 $r\n";}
  56. reset 'b';
  57. @bar = ();
  58. $bar[0] = '0';
  59. $r = join(',', $#bar, @bar);
  60. if ($r eq "0,0") {print "ok 19\n";} else {print "not ok 19 $r\n";}
  61. $bar[2] = '2';
  62. $r = join(',', $#bar, @bar);
  63. if ($r eq "2,0,,2") {print "ok 20\n";} else {print "not ok 20 $r\n";}
  64.  
  65. $foo = 'now is the time';
  66. if (($F1,$F2,$Etc) = ($foo =~ /^(\S+)\s+(\S+)\s*(.*)/)) {
  67.     if ($F1 eq 'now' && $F2 eq 'is' && $Etc eq 'the time') {
  68.     print "ok 21\n";
  69.     }
  70.     else {
  71.     print "not ok 21\n";
  72.     }
  73. }
  74. else {
  75.     print "not ok 21\n";
  76. }
  77.  
  78. $foo = 'lskjdf';
  79. if ($cnt = (($F1,$F2,$Etc) = ($foo =~ /^(\S+)\s+(\S+)\s*(.*)/))) {
  80.     print "not ok 22 $cnt $F1:$F2:$Etc\n";
  81. }
  82. else {
  83.     print "ok 22\n";
  84. }
  85.  
  86. %foo = ('blurfl','dyick','foo','bar','etc.','etc.');
  87. %bar = %foo;
  88. print $bar{'foo'} eq 'bar' ? "ok 23\n" : "not ok 23\n";
  89. %bar = ();
  90. print $bar{'foo'} eq '' ? "ok 24\n" : "not ok 24\n";
  91. (%bar,$a,$b) = (%foo,'how','now');
  92. print $bar{'foo'} eq 'bar' ? "ok 25\n" : "not ok 25\n";
  93. print $bar{'how'} eq 'now' ? "ok 26\n" : "not ok 26\n";
  94. @bar{keys %foo} = values %foo;
  95. print $bar{'foo'} eq 'bar' ? "ok 27\n" : "not ok 27\n";
  96. print $bar{'how'} eq 'now' ? "ok 28\n" : "not ok 28\n";
  97.  
  98. @foo = grep(/e/,split(' ','now is the time for all good men to come to'));
  99. print join(' ',@foo) eq 'the time men come' ? "ok 29\n" : "not ok 29\n";
  100.  
  101. @foo = grep(!/e/,split(' ','now is the time for all good men to come to'));
  102. print join(' ',@foo) eq 'now is for all good to to' ? "ok 30\n" : "not ok 30\n";
  103.  
  104. $foo = join('',('a','b','c','d','e','f')[0..5]);
  105. print $foo eq 'abcdef' ? "ok 31\n" : "not ok 31\n";
  106.  
  107. $foo = join('',('a','b','c','d','e','f')[0..1]);
  108. print $foo eq 'ab' ? "ok 32\n" : "not ok 32\n";
  109.  
  110. $foo = join('',('a','b','c','d','e','f')[6]);
  111. print $foo eq '' ? "ok 33\n" : "not ok 33\n";
  112.  
  113. @foo = ('a','b','c','d','e','f')[0,2,4];
  114. @bar = ('a','b','c','d','e','f')[1,3,5];
  115. $foo = join('',(@foo,@bar)[0..5]);
  116. print $foo eq 'acebdf' ? "ok 34\n" : "not ok 34\n";
  117.  
  118. $foo = ('a','b','c','d','e','f')[0,2,4];
  119. print $foo eq 'e' ? "ok 35\n" : "not ok 35\n";
  120.  
  121. $foo = ('a','b','c','d','e','f')[1];
  122. print $foo eq 'b' ? "ok 36\n" : "not ok 36\n";
  123.  
  124. @foo = ( 'foo', 'bar', 'burbl');
  125. push(foo, 'blah');
  126. print $#foo == 3 ? "ok 37\n" : "not ok 37\n";
  127.  
  128. # various AASSIGN_COMMON checks (see newASSIGNOP() in op.c)
  129.  
  130. $test = 37;
  131. sub t { ++$test; print "not " unless $_[0]; print "ok $test\n"; }
  132.  
  133. @foo = @foo;
  134. t("@foo" eq "foo bar burbl blah");                # 38
  135.  
  136. (undef,@foo) = @foo;
  137. t("@foo" eq "bar burbl blah");                    # 39
  138.  
  139. @foo = ('XXX',@foo, 'YYY');
  140. t("@foo" eq "XXX bar burbl blah YYY");                # 40
  141.  
  142. @foo = @foo = qw(foo bar burbl blah);
  143. t("@foo" eq "foo bar burbl blah");                # 41
  144.  
  145. @bar = @foo = qw(foo bar);                    # 42
  146. t("@foo" eq "foo bar");
  147. t("@bar" eq "foo bar");                        # 43
  148.  
  149. # try the same with local
  150. # XXX tie-stdarray fails the tests involving local, so we use
  151. # different variable names to escape the 'tie'
  152.  
  153. @bee = ( 'foo', 'bar', 'burbl', 'blah');
  154. {
  155.  
  156.     local @bee = @bee;
  157.     t("@bee" eq "foo bar burbl blah");                # 44
  158.     {
  159.     local (undef,@bee) = @bee;
  160.     t("@bee" eq "bar burbl blah");                # 45
  161.     {
  162.         local @bee = ('XXX',@bee,'YYY');
  163.         t("@bee" eq "XXX bar burbl blah YYY");        # 46
  164.         {
  165.         local @bee = local(@bee) = qw(foo bar burbl blah);
  166.         t("@bee" eq "foo bar burbl blah");        # 47
  167.         {
  168.             local (@bim) = local(@bee) = qw(foo bar);
  169.             t("@bee" eq "foo bar");            # 48
  170.             t("@bim" eq "foo bar");            # 49
  171.         }
  172.         t("@bee" eq "foo bar burbl blah");        # 50
  173.         }
  174.         t("@bee" eq "XXX bar burbl blah YYY");        # 51
  175.     }
  176.     t("@bee" eq "bar burbl blah");                # 52
  177.     }
  178.     t("@bee" eq "foo bar burbl blah");                # 53
  179. }
  180.  
  181. # try the same with my
  182. {
  183.  
  184.     my @bee = @bee;
  185.     t("@bee" eq "foo bar burbl blah");                # 54
  186.     {
  187.     my (undef,@bee) = @bee;
  188.     t("@bee" eq "bar burbl blah");                # 55
  189.     {
  190.         my @bee = ('XXX',@bee,'YYY');
  191.         t("@bee" eq "XXX bar burbl blah YYY");        # 56
  192.         {
  193.         my @bee = my @bee = qw(foo bar burbl blah);
  194.         t("@bee" eq "foo bar burbl blah");        # 57
  195.         {
  196.             my (@bim) = my(@bee) = qw(foo bar);
  197.             t("@bee" eq "foo bar");            # 58
  198.             t("@bim" eq "foo bar");            # 59
  199.         }
  200.         t("@bee" eq "foo bar burbl blah");        # 60
  201.         }
  202.         t("@bee" eq "XXX bar burbl blah YYY");        # 61
  203.     }
  204.     t("@bee" eq "bar burbl blah");                # 62
  205.     }
  206.     t("@bee" eq "foo bar burbl blah");                # 63
  207. }
  208.  
  209.